package com.ruoyi.project.dict.res.service.impl;

import com.ruoyi.common.utils.SizeUtil;
import com.ruoyi.common.utils.text.Convert;
import com.ruoyi.framework.aspectj.lang.annotation.DataSource;
import com.ruoyi.framework.aspectj.lang.enums.DataSourceType;
import com.ruoyi.project.dict.res.domain.MaterialRes;
import com.ruoyi.project.dict.res.mapper.MaterialResMapper;
import com.ruoyi.project.dict.res.service.IMaterialResService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 学习资料资源Service业务层处理
 *
 * @author shixiangwen
 * @date 2020-05-08
 */
@Service
@DataSource(DataSourceType.DICT)
public class MaterialResServiceImpl implements IMaterialResService {

    @Autowired
    private MaterialResMapper materialResMapper;

    /**
     * 查询学习资料资源
     *
     * @param id 学习资料资源ID
     * @return 学习资料资源
     */
    @Override
    public MaterialRes selectMaterialResById(Long id) {
        return materialResMapper.selectMaterialResById(id);
    }

    /**
     * 查询学习资料资源列表
     *
     * @param materialRes 学习资料资源
     * @return 学习资料资源
     */
    @Override
    public List<MaterialRes> selectMaterialResList(MaterialRes materialRes) {
        List<MaterialRes> list = materialResMapper.selectMaterialResList(materialRes);
        list.forEach(item -> {
            item.setSizeFormat(SizeUtil.sizeFormat(item.getSize()));
        });
        return list;
    }

    /**
     * 新增学习资料资源
     *
     * @param materialRes 学习资料资源
     * @return 结果
     */
    @Override
    public int insertMaterialRes(MaterialRes materialRes) {
        return materialResMapper.insertMaterialRes(materialRes);
    }

    /**
     * 修改学习资料资源
     *
     * @param materialRes 学习资料资源
     * @return 结果
     */
    @Override
    public int updateMaterialRes(MaterialRes materialRes) {
        return materialResMapper.updateMaterialRes(materialRes);
    }

    /**
     * 删除学习资料资源对象
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteMaterialResByIds(String ids) {
        return materialResMapper.deleteMaterialResByIds(Convert.toStrArray(ids));
    }

    /**
     * 删除学习资料资源信息
     *
     * @param id 学习资料资源ID
     * @return 结果
     */
    @Override
    public int deleteMaterialResById(Long id) {
        return materialResMapper.deleteMaterialResById(id);
    }

    @Override
    public Integer selectMaxSeq(Long materialId) {
        return materialResMapper.selectMaxSeq(materialId);
    }

    @Override
    @Transactional(rollbackFor = {Exception.class})
    public void add(List<MaterialRes> materialResList) {

        materialResList.forEach(item -> {
            materialResMapper.insertMaterialRes(item);
        });

    }
}
